//
//  ViewController.swift
//  JKIndex
//
//  Created by 王冲 on 2020/3/26.
//  Copyright © 2020 王冲. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    private let itemList: [String] = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
    
    private var tableView: UITableView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.title = "XCRIndexView"
        self.view.backgroundColor = UIColor.white
        
        commonInit()
    }

    private func commonInit() {
        view.backgroundColor  = UIColor.white
        
        tableView = UITableView(frame: CGRect.zero, style: .grouped)
        tableView.delegate = self
        tableView.dataSource = self
        view.addSubview(tableView)
        
        let indexViewConfig = JKIndexViewConfiguration(indexViewStyle: .default)
        tableView.jk_indexViewConfiguration = indexViewConfig
        tableView.jk_translucentForTableViewInNavigationBar = true
        tableView.jk_indexViewDataSource = itemList
        tableView.jk_startSection = UInt(0)
        tableView.jk_indexViewHidden = false
    
        tableView.snp.makeConstraints { (make) in
            make.edges.equalToSuperview()
        }
        tableView.reloadData()
    }
}

extension ViewController: UITableViewDelegate, UITableViewDataSource {
    func numberOfSections(in tableView: UITableView) -> Int {
        return itemList.count
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 3;
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cellID = "cellID"
        var cell = tableView.dequeueReusableCell(withIdentifier: cellID)
        if cell == nil {
            cell = UITableViewCell(style: .default, reuseIdentifier: cellID)
        }
        cell?.textLabel!.text = "\(itemList[indexPath.section])\(indexPath.row)"
        cell?.textLabel?.textColor = UIColor.black
        return cell!
    }
    
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPath, animated: false)
    }
    
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 25
    }
    
    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        return CGFloat.leastNonzeroMagnitude
    }
    
    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let label = UILabel()
        label.text = "\(itemList[section])"
        label.textColor = UIColor.black
        label.font = UIFont.systemFont(ofSize: 20)
        label.frame = CGRect(x: 0, y: 0, width: 50, height: 25)
        return label
    }
    
    func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
        return nil
    }
}

